-- @owner: zou_jialiang050
-- @date: 2024-08-12
-- @testpoint: 结合自定义函数使用，合理报错

--step1:创建一个自定义函数 expect:成功
drop function if exists f_aggregate_case0029;
CREATE FUNCTION f_aggregate_case0029(integer, anyelement)
  RETURNS integer
  AS $$
    SELECT $2 + 1;
  $$ LANGUAGE SQL;
/

--step2:创建一个嵌套统计信息函数的聚合函数 expect:合理报错
drop aggregate if exists a_aggregate_case0029;
create aggregate a_aggregate_case0029(anyelement)
(
  sfunc = my_count_sfunc,
  stype = integer,
  initcond = '0'
);

--step3:创建表并插入数据 expect:成功
drop table if exists t_aggregate_case0029;
create table t_aggregate_case0029(id int, name char(20));
insert into t_aggregate_case0029 values (1, 'a'), (2, 'b'), (3, 'c');

--step4:调用新的聚合函数 expect:合理报错
select a_aggregate_case0029(id) from t_aggregate_case0029;

--step5:使用错误数据类型调用函数 expect:合理报错
select a_aggregate_case0029(name) from t_aggregate_case0029;

--step6:清理环境 expect:成功
drop function if exists f_aggregate_case0029;
drop table if exists t_aggregate_case0029;
